home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / dev / gui / MPGui5xs.lha / sg / MPGui.h < prev    next >
C/C++ Source or Header  |  1996-11-26  |  7KB  |  185 lines

  1. // MPGui - requester library
  2. // Copyright (C) © 1995 Mark John Paddock
  3.  
  4. // This program is free software; you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation; either version 2 of the License, or
  7. // any later version.
  8.  
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. // GNU General Public License for more details.
  13.  
  14. // You should have received a copy of the GNU General Public License
  15. // along with this program; if not, write to the Free Software
  16. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. // mark@topic.demon.co.uk
  19. // mpaddock@cix.compulink.co.uk
  20.  
  21. #include <exec/types.h>
  22. #include <exec/lists.h>
  23. #include <utility/tagitem.h>
  24.  
  25. // Different types of gadgets
  26. #define GAD_LFILE        1
  27. #define GAD_SFILE        2
  28. #define GAD_FILE        3
  29. #define GAD_OFILE        4
  30. #define GAD_ONUMBER    5
  31. #define GAD_NUMBER    6
  32. #define GAD_CYCLE        7
  33. #define GAD_STRING    8
  34. #define GAD_OSTRING    9
  35. #define GAD_CHECK        10
  36. #define GAD_SLIDER    11
  37. #define GAD_MODE        12
  38. #define GAD_LIST        13
  39. #define GAD_OMODE        14
  40. #define GAD_FONT        15
  41. #define GAD_OFONT        16
  42. #define GAD_MLIST        17
  43. #define GAD_BUTTON    18
  44. #define GAD_TEXT        19
  45. #define GAD_MTEXT        20
  46. #define GAD_BUTTONTEXT    99    // Heading of Button gadgets
  47.  
  48. extern char OKCHAR;
  49. extern char CANCELCHAR;
  50. extern char SAVECHAR;
  51. extern char USECHAR;
  52. #define GADGETWIDTH 26
  53.  
  54. struct MyGadgetPtr {
  55.     struct MyGadget *MyGadget;
  56.     short                Number;
  57. };
  58.  
  59. struct MyGadget {        // A gadget
  60.     struct Node        GNode;        //    Used for list of gadgets on command
  61.     short                Type;            // Gadget type
  62.     struct List        VList;        // Used for values on cycle/list gadget
  63.     STRPTR            *VStrings;    //    Used for strings on cycle gadget
  64.     struct MyGadget *OwnCycle;    // Owning cycle gadget
  65.     struct Gadget    *Gadget1;    // 1st gadget
  66.     struct Gadget    *Gadget2;    // 2nd gadget
  67.     struct Gadget    *Gadget3;    //    3rd gadget
  68.     long                Activey;        // Cycle value these are activated on
  69.     char                *Title;        // Title of gadget
  70.     char                *Prefix;        // Prefix for command
  71.     char                *NPrefix;    // Negative Value for Check Box
  72.     char                *Defaults;    //    Default string/MLIST;
  73.     long                Defaultn;    // Default number (includes slider)
  74.     long                Minn;            // For slider;
  75.     long                Maxn;            // For slider;
  76.     short                logMaxn;        // length of maxval
  77.     short                Defaultc;    // Default check;
  78.     long                Defaulty;    //    Default cycle/list;
  79.     long                Currentc;    // Current check;
  80.     long                Currenty;    //    Current cycle/list;
  81.     long                Currentn;    // Current slider
  82.     long                Numbery;        // Number of cycle gadgets
  83.     struct MyGadgetPtr Ptr1;        // UserData points to one of these
  84.     struct MyGadgetPtr Ptr2;
  85.     struct MyGadgetPtr Ptr3;
  86.     char                Char;            // Keyboard shortcut
  87.     char                *HelpNode;    // Help Node for gadget
  88.     int Lines;                        // Number of lines for listview
  89.     UBYTE ModeType;                // Type of screen/font mode requester
  90.     char                *HelpMessage;    // Help Message to display
  91.     long                ButtonNo;    // Number of button
  92.     struct MyGadget *OwnButton;// Owning Button Text gadget
  93.     short                ButtonCount;// Number of Buttons this buttontext owns
  94. };
  95.  
  96. struct MyValue {
  97.     struct Node        VNode;        // Used for list of cycle values;
  98.     char                *Prefix;        //    Prefix for command
  99.     char                *NPrefix;    // Negative Prefix (for MLIST)
  100.     BOOL                Selected;    // Is this selected? (for MLIST)
  101. };
  102.  
  103. #define MPGUIHANDLE
  104. struct MPGuiHandle {    // Note strings come at the start to reduce memory corruption problems
  105.     char error[81];                            // resulting error message
  106.     char result[1025];                        // resulting message
  107.     char buffer[257];                            // Buffer to read input file
  108.     char tBuffer[256];
  109.     char TempFileName[257];                    // Stored file name
  110.     char *comment[6];                            // first 6 Comments in file
  111.     UWORD Zoom[4];                                // Used for zoom size of window
  112.     long linenumber;                            // Current line number for error messages
  113.     struct MyGadget *CurrentGadget;        //    The current gadget
  114.     struct MyGadget *CurrentCycle;        // The current owning cycle gadget
  115.     struct MyValue *CurrentValue;            // Current cycle list
  116.     long    CurrentCycleVal;
  117.     struct Screen *MyScreen;                // Screen to use
  118.     struct TextAttr *MyTextAttr;            // Text attributes of screen
  119.     struct FileRequester *filereq;        // File requester
  120.     BPTR fp;                                        // Config file
  121.     short FoundError;                            // Have we found an error yet
  122.     short OutOfMemory;                        // Run out of memory?
  123.     APTR MemPool;                                // Global memory pool
  124.     int leftsize;                                // left hand size of requester
  125.     int rightsize;                                // right hand size
  126.     int tleftsize;                                // left hand size of requester using topaz 8
  127.     int trightsize;                            // right hand size using topaz 8
  128.     int allsize;                                // whole size of requester
  129.     int tallsize;                                // whole size of requester using topaz 8
  130.     char *CurrentPos;
  131.     STRPTR *ptr;
  132.     APTR VisInfo;
  133.     struct Gadget *Context;
  134.     struct Window *Window;                    // Requester Window
  135.     struct IntuiMessage    *IntuiMsg;
  136.     long height;
  137.     int TitleLength;                            // Length of window title
  138.     int width;                                    // Window Width
  139.     struct TagItem *TagList;                // Copy of user tags
  140.     struct Hook *HelpFunc;                    // HelpFunction
  141.     BOOL CHelp;                                    // Continuous Help?
  142.     char **Params;                                // Parameters to replace %n%
  143.     ULONG Response;                            //    For prefs mode - 1 = save 2 = use
  144.     struct NewMenu *NewMenu;                // NewMenu for window
  145.     struct Menu *Menu;                        // Menu for window
  146.     struct Hook *MenuFunc;                    // Called for Menu (and menu help) message
  147.     BOOL Prefs;                                    // Is this a Prefs type handle
  148.     BOOL NewLine;                                // Should we output a new line rather than space
  149.     int Bottom;                                    // Bottom of requester
  150.     ULONG Signals;                                // Signals to wait on
  151.     struct Hook *SignalFunc;                // Called for Signals
  152.     struct TextAttr Attr;                    // Used if we use topaz 80
  153.     ULONG numlines;                            // Number of horizontal text lines in requester
  154.     ULONG extralist;                            // Extra lines (included above) in list views
  155.     ULONG interwidth;                            // INTERWIDTH or 0
  156.     ULONG interheight;                        // INTERHEIGHT or 0
  157.     BOOL UseTopaz;                                // Use topaz 80/Default font
  158.     UWORD XSize;                                // Width of fixed font
  159.     struct Image* Check;                        // Checkmark for menu
  160.     struct Image* Amiga;                        // AmigaKey for menu
  161.     BOOL HelpMessageB;                        // Any Help Messages?
  162.     struct Gadget* HelpGadget;                // Help Message
  163.     struct List        GList;                    // List of gadgets
  164.     char                *Command;                //    Command to run
  165.     char                *Comment;                //    Helpful comment - title of requester
  166.     char                *HelpNode;                // Help node for requester
  167.     char                *HelpMessage;            // HelpMessage
  168.     UWORD                FontSize;                // Font size
  169.     BOOL                NoButtons;                // If set then no buttons
  170.     struct            Hook *ButtonFunc;        // Callled for Button presses
  171.     struct Requester Requestx;                // Used to disable window
  172.     int Disabled;                                // Number of times disabled
  173.     struct Hook     RefreshHook;            // Refresh Hook for Requesters
  174.     BOOL NoUse;                                    // Disable short cuts for buttons
  175.     BOOL NoSave;
  176.     BOOL NoOk;
  177.     BOOL NoCancel;
  178. };
  179.  
  180. extern far const struct Hook                  HookList;
  181.  
  182. extern char *GetMessage(UWORD message);
  183.  
  184. extern struct Catalog *Catalog;
  185.